package com.bwie.house.config;

import com.bwie.house.entity.CrawlerNewhouseEntity;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * 爬虫  工具类
 * @Author 张泽宇
 * @Date 2022/4/24 11:41
 * @ProjectName: [search_house]
 * @Package: [com.bwie.house.config]
 * @ClassName: []
 *      TODO
 *
 *
 *      爬虫依赖 crawler
 *      <dependency>
 *           <groupId>org.jsoup</groupId>
 *           <artifactId>jsoup</artifactId>
 *           <version>1.13.1</version>
 *      </dependency>
 *
 */
@Component
public class CrawlerTest {

    /**
     * 获取请求  贝壳找房 新房  https://sh.ke.com/ershoufang/
     * 注意 ：必须联网！！！！  才能获取到数据
    * @author 張泽宇
    * @date 2022/4/24 11:53
    * @return
    */
    public List<CrawlerNewhouseEntity> CrawlerTest() throws Exception {
        //   爬网站的路径
        String url = "https://sh.ke.com/ershoufang/";
        //解析爬虫 爬到网站的数据   jsoup返回的Document就是Document爬虫对象
        Document document = Jsoup.parse(new URL(url), 30000);
        //获取网站 的ID
        Element elementById = document.getElementById("beike");
        //获取所有的li 文件
        Elements elements = elementById.getElementsByTag("li");
        //获取元素中的内容  然后放到ArrayList 中
        ArrayList<CrawlerNewhouseEntity> list = new ArrayList<>();
        //el  就是我们获取到li中的每一个对象数据
        for (Element element : elements) {
            String img = element.getElementsByClass("lj-lazy").eq(0).attr("data-original");
            //System.out.println("爬的图片："+img);
            String title = element.getElementsByClass("VIEWDATA CLICKDATA maidian-detail").eq(0).text();
            //System.out.println("标题信息:"+title);
            String location = element.getElementsByClass("positionInfo").eq(0).text();
            //System.out.println("地理位置:"+location);
            String houseInfo = element.getElementsByClass("houseInfo").eq(0).text();
            //System.out.println("房屋信息："+houseInfo);
            String priceInfo = element.getElementsByClass("totalPrice totalPrice2").eq(0).text();
            //System.out.println("房屋价格："+priceInfo);
            String unitPrice = element.getElementsByClass("unitPrice").eq(0).text();
            //System.out.println("每平方米价格："+unitPrice);

            //我们对象  把每次获取到的数据放到我们的对象中去
            CrawlerNewhouseEntity crawlerNewhouseEntity = new CrawlerNewhouseEntity();
            //我们网站会有很多空数据  这个时候需要进行 滤空操作  以及判断不是空字符串
            if(StringUtils.isNotEmpty(img) && img!=""){
                crawlerNewhouseEntity.setHouseImg(img);
                crawlerNewhouseEntity.setHouseTitle(title);
                crawlerNewhouseEntity.setHouseLocation(location);
                crawlerNewhouseEntity.setHouseInfo(houseInfo);
                crawlerNewhouseEntity.setHousePrice(priceInfo);
                crawlerNewhouseEntity.setHouseUnitPrice(unitPrice);
                //添加到我们的ArrayList 中
                list.add(crawlerNewhouseEntity);
            }
        }
        //打印获取的网站数据
        System.out.println(list);
        //返回ArrayList对象中的所有数据   泛型是 List<CrawlerNewhouseEntity>
        return list;
    }

//    public static void main(String[] args) throws Exception {
//
//        CrawlerTest crawlerTest = new CrawlerTest();
//        crawlerTest.aaa();
//    }
}

